﻿using System;
using System.Collections.Generic;

namespace TwinHead.Frameworks.Morph.Tokens
{
    /// <summary>
    /// 토튼에 대한 명세를 제공하는 인터페이스
    /// </summary>
    public interface IToken : IDisposable
    {
        /// <summary>
        /// 현토큰의 언어성분을 반환합니다.
        /// </summary>
        string LanguageSymbolString
        {
            get;
        }
        /// <summary>
        /// 현재 토큰을 이용해서 분석처리된 문자(열)목록을 가져옵니다.
        /// </summary>
        IList<string> DerivedWordSet
        {
            get;
        }
        /// <summary>
        /// 현재 토큰의 구분을 가져옵니다.
        /// </summary>
        TokenType Type
        {
            get;
        }
        /// <summary>
        /// 현재 토큰의 값을 가져옵니다.
        /// </summary>
        string Value
        {
            get;
        }
        /// <summary>
        /// 현재 토큰중에서 한국어에 해당하는 값을 가져옵니다.
        /// </summary>
        string KoreanValue
        {
            get;
        }
        /// <summary>
        /// 현재 토큰이 원래의 본문에서 어떤 줄에서 파생되었는지를 알 수 있는 줄번호를 가져옵니다.
        /// </summary>
        int Line
        {
            get;
        }
        /// <summary>
        /// 현재 토큰이 원래의 본문에서 어떤 줄의 몇번째 토큰에서 파생되었는지를 알 수 있는 열번호를 가져옵니다.
        /// </summary>
        int Col
        {
            get;
        }
    }
}
